<?php
/**
 * This file is write by Zenk , All Copyright reserved.
 * 功能：简单的数据库类，连接、查询、删除等基本数据库功能
 * 文件信息：2007年12月19日 1：28分开始编写 
 * 使用方法：$db = new DB($配置信息数组);
*/
class DataBase {
	var $link = '';                 //链接标识
	var $one_row = array();         //如果需要返回一条记录所用到变量
	var $all_row = array();         //如果需要返回查询的所有结果所用的变量
	var $res = '';                  //资源标识
	var $sql = '';                  //正在执行的SQL语句
	var $opened = false;			//是否已经连接
	private $aD = array();			//数据库信息
	
	/*连接数据库 connect,选择数据库 select_db*/
	function __construct( $aD ) {
		if( strlen( $aD['host'] ) > 0 && strlen( $aD['user'] ) > 0 ) {
			$this->aD = $aD;
		} else {
			$this->halt( 'Empty DB Infomation!' );
		}
	}
	
	function connect() {
		if( $this->opened == true ) {
			return true;
		}
		$this->link = mysql_connect( $this->aD['host'], $this->aD['user'], $this->aD['pwd'] ) 
					  or $this->halt( 'DB_connect Error!' );
		$this->opened = true;
		$this->exe( "SET NAMES 'utf8'" );
	}
	
	/*查询 mysql_query*///这里不能用大写的$SQL，否则出错。
	function exe ( $sql ) {
		$this->connect();
		$this->sql = $sql;
		$this->res = mysql_query( $this->sql, $this->link ) or $this->halt( 'Query Error!' );
		return $this->res;
	}
	
	function fetch( $res = null, $mode = MYSQL_ASSOC ) {
		$res = is_null( $res ) ? $this->res : $res;
		return mysql_fetch_array( $res, $mode );
	}

	//获取一条记录数据内容存入数组中
	function get_one ( $sql ) {
		$this->exe( $sql );
		return $this->fetch();
	}

	//获取所有数据内容存入数组中
	function get_all ( $sql ) {
		$this->exe( $sql );
		$this->all_row = array();
		while ( $aR = $this->fetch() ) {
			$this->all_row[] = $aR;
		}
		return is_array( $this->all_row ) ? $this->all_row : array();
	}
	
	/* 修改结果计数 */
	function update_rows () {
		return mysql_affected_rows( $this->link );
	}
	
	/*查询结果计数 num_rows*/
	function select_rows () {
		return mysql_num_rows( $this->res );
	}
	
	/**
	 * 返回刚插入的记录的id
	 *
	 * @return int
	 */
	function insertid() {
		return mysql_insert_id( $this->link );
	}
	
	/*释放结果集 free_result*/
	function free () {
		mysql_free_result ( $this->res );
	}
	
	/*关闭SQL连接 close*/
	function close() {
		mysql_close( $this->link );
	}
	
	/*出错处理 error errno */
	function halt( $msg = '' ) {
		$error_msg = 'ERRNO:' . mysql_errno( $this->link ) . ', ERRDESC:' . mysql_error( $this->link ) . 
					 'ERRSQL:' . $this->sql . 'ERRORMSG:' . $msg . "\n";
		if( PRODUCT_ENV ) {
			//跳转到错误页面;
			exit;
		}
		echo $error_msg;
		exit;
	}
}
